package domain;

// Generated 08-ene-2009 0:57:32 by Hibernate Tools 3.2.2.GA

import static javax.persistence.GenerationType.IDENTITY;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Reserva generated by hbm2java
 */
@Entity
@Table(name = "reserva", catalog = "irestaurant")
public class Reserva implements java.io.Serializable {

	private Integer reserva;
	private Usuario usuario;
	private Restaurante restaurante;
	private Date fecha;
	private boolean almuerzo;
	private Set<Reservamesa> reservamesas = new HashSet<Reservamesa>(0);

	public Reserva() {
	}

	public Reserva(Usuario usuario, Restaurante restaurante, Date fecha,
			boolean almuerzo) {
		this.usuario = usuario;
		this.restaurante = restaurante;
		this.fecha = fecha;
		this.almuerzo = almuerzo;
	}
	public Reserva(Usuario usuario, Restaurante restaurante, Date fecha,
			boolean almuerzo, Set<Reservamesa> reservamesas) {
		this.usuario = usuario;
		this.restaurante = restaurante;
		this.fecha = fecha;
		this.almuerzo = almuerzo;
		this.reservamesas = reservamesas;
	}

	

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "reserva", unique = true, nullable = false)
	public Integer getReserva() {
		return this.reserva;
	}

	public void setReserva(Integer reserva) {
		this.reserva = reserva;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "usuario", nullable = false)
	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "restaurante", nullable = false)
	public Restaurante getRestaurante() {
		return this.restaurante;
	}

	public void setRestaurante(Restaurante restaurante) {
		this.restaurante = restaurante;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha", nullable = false, length = 0)
	public Date getFecha() {
		return this.fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	@Column(name = "almuerzo", nullable = false)
	public boolean isAlmuerzo() {
		return this.almuerzo;
	}

	public void setAlmuerzo(boolean almuerzo) {
		this.almuerzo = almuerzo;
	}
	
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "reserva")
	public Set<Reservamesa> getReservamesas() {
		return this.reservamesas;
	}

	public void setReservamesas(Set<Reservamesa> reservamesas) {
		this.reservamesas = reservamesas;
	}
	
	
}
